package hx.front.manager;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.SessionAware;

import com.opensymphony.xwork2.ActionSupport;

public abstract class ManagerAction extends ActionSupport implements
		SessionAware, ServletRequestAware {

	private static final long serialVersionUID = 1L;

	protected static final String PRE_LOAD = "Comienza la carga de datos para edición del objeto.";
	protected static final String POST_LOAD = "Fin de recuperación de los datos del objeto";

	protected static final String BEFORE_EDIT = "beforeEdit";
	protected static final String CREATE = "create";
	protected static final String EDIT = "edit";

	private Map<String, Object> session;
	private HttpServletRequest servletRequest;
	private String action;

	// Obligamos a implementar estos métodos para garantizar homogeneidad

	/**
	 * Actualiza o crea una entidad.
	 * 
	 * @return - Resultado del proceso.
	 * @throws Exception
	 */
	public abstract String updateCreate() throws Exception;

	/**
	 * Carga las colecciones del formulario
	 * 
	 * @throws Exception
	 */
	protected abstract void loadCollections() throws Exception;

	/**
	 * Rellena los campos del formulario con la información del objeto a editar.
	 */
	protected abstract void fillForm(String id);

	public String getAction() {
		return action;
	}

	public void setAction(String action) {
		this.action = action;
	}

	@Override
	public void setSession(Map<String, Object> arg0) {
		session = arg0;
	}

	public Map<String, Object> getSession() {
		return session;
	}

	@Override
	public void setServletRequest(HttpServletRequest arg0) {
		servletRequest = arg0;
	}

	public HttpServletRequest getServletRequest() {
		return servletRequest;
	}

}
